package com.xianniu.ltc.mapper;

import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xianniu.ltc.model.entity.TProjectDTO;
import com.xianniu.ltc.model.po.ProjectCountPO;
import com.xianniu.ltc.model.po.ProjectQueryPO;
import com.xianniu.ltc.model.po.ProjectQueryRelatedPO;
import com.xianniu.ltc.model.vo.project.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @description 项目表
 * @author zhangyang@zencor.cn
 * @date 2021-05-19
 */
@Mapper
public interface TProjectMapper extends BaseMapper<TProjectDTO> {

    /**
     * 列表查询以及关联商机查询出商机的联系人信息
     * @param page
     * @param po
     * @return
     */
    IPage<ProjectPageVO> projectList(@Param("page") Page page, @Param("po") ProjectQueryPO po, @Param("member") String member);

    Integer selectProjectCount(@Param("po") ProjectCountPO po, @Param("member") String member);

    /**
     * 项目：查询商机
     * @param po
     * @return
     */
    @InterceptorIgnore(tenantLine = "on")
    ProjectNicheVO selectNiche(@Param("po") ProjectQueryRelatedPO po);

    /**
     * 项目：查询客户信息
     * @param po
     * @return
     */
    @InterceptorIgnore(tenantLine = "on")
    ProjectCustomerVO selectCustomerInfo(@Param("po") ProjectQueryRelatedPO po);

    /**
     * 项目：查询客户涉及的联系人信息
     * @param accountId
     * @return
     */
    List<ProjectContactVO> selectContactVOList(String accountId);

    /**
     * 查询售前协同
     */
    IPage<ProjectPreSaleCoordinationVO> selectPreSaleCoordinationPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 查询投标协同
     */
    IPage<ProjectTenderTogetherVO> selectTenderTogetherPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 投标协同
     */
    IPage<ProjectQuotationTogetherVO> selectQuotationTogetherPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 售前方案
     */
    IPage<ProjectPrdSalesPlanVO> selectPrdSalesPlanPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 报价单
     */
    IPage<ProjectQuotationVO> selectQuotationPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 框架协议（销售）
     */
    IPage<ProjectContractVO> selectSaleFrameworkAgreementPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 项目合同（销售）
     */
    IPage<ProjectContractVO> selectSaleContractPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 补充协议【销售】
     */
    IPage<ProjectContractVO> selectBuchongxieyiPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 框架协议（采购）
     */
    IPage<ProjectContractVO> selectPurFrameworkAgreementPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 项目合同（采购）
     */
    IPage<ProjectContractVO> selectPurchaseContractPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 补充协议【采购】
     */
    IPage<ProjectContractVO> selectPurchaseBuchongxieyiPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 回款计划
     */
    IPage<ProjectCollectionPlanVO> selectCollectionPlanPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 收款流水
     */
    IPage<ProjectCollectingWaterVO> selectCollectingWaterPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 付款计划
     */
    IPage<ProjectPaymentPlanVO> selectPaymentPlanPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 分佣任务
     */
    IPage<ProjectCommissionTaskVO> selectCommissionTaskPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 项目激励
     */
    IPage<ProjectProjectIncentiveVO> selectProjectIncentivePage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 采购事件
     */
    IPage<ProjectPurchaseEventVO> selectPurchaseEventPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

    /**
     * 交付事件
     */
    IPage<ProjectDeliveryEventVO> selectDeliveryEventPage(@Param("page") Page page, @Param("param") String param, @Param("idList") List<String> idList);

}

